#!/bin/bash

### post-install chroot customization script ###

set -e -u
source /root/customize_root_image-constants.inc


LOG_CONFIG "timezone and locales"

ln -sf /usr/share/zoneinfo/UTC /etc/localtime
for locale in ${LOCALES} ; do sed -i "s/#${locale}/${locale}/" /etc/locale.gen ; done ;
locale-gen


LOG_CONFIG "sudo"

chmod 750 /etc/sudoers.d
chmod 440 /etc/sudoers.d/g_wheel


LOG_CONFIG "pacman"

sed -i "s|#Server|Server|" /etc/pacman.d/mirrorlist
# FIXME: BEGIN issue #1838
echo -e "[pcr-testing]\nInclude = /etc/pacman.d/mirrorlist" >> /etc/pacman-online.conf
# FIXME: END issue #1838
[ "${INSTALL_TYPE}" == 'Complete' ] && cp /etc/pacman-offline.conf /etc/pacman.conf || \
                                       cp /etc/pacman-online.conf  /etc/pacman.conf


LOG_CONFIG "services"

if   [[ "${ISO_INIT}" == 'systemd' ]]
then # delete files that are specific to other init systems
     rm ${SYSTEMD_DELETE_FILES}

     # enable services
     systemctl enable ${SYSTEMD_SERVICES}

elif [[ "${ISO_INIT}" == 'openrc' ]]
then # delete files that are specific to other init systems
     rm ${OPENRC_DELETE_FILES}

     # enable services
     for service in ${OPENRC_SERVICES} ; do rc-update add ${service} default ; done ;

     # create the dbus user and group if it does not exist
     if [[ "$(grep 'dbus' /etc/group )" = "" ]] ; then groupadd -g 81 dbus ; fi ;
     if [[ "$(grep 'dbus' /etc/passwd)" = "" ]] ; then useradd -r -s /sbin/nologin -g 81 -u 81 dbus ; fi ;

else echo "invalid \$ISO_INIT for services '${ISO_INIT}'"
     exit 1
fi


LOG_CONFIG "system defaults and root user"

usermod -s ${DEFAULT_SHELL} root 2> /dev/null
sed -i "s|_EDITION_TITLE_|${ISO_TITLE}|"                     /etc/motd
sed -i "s|_NETWORK_MOTD_MSG_|${NETWORK_MOTD_MSG}|"           /etc/motd
sed -i "s|PRETTY_NAME=.*|PRETTY_NAME=\"${OS_PRETTY_NAME}\"|" /usr/lib/os-release
echo "VERSION=\"${OS_VERSION}\""                          >> /usr/lib/os-release
echo "VERSION_ID=\"${OS_VERSION_ID}\""                    >> /usr/lib/os-release
echo "VARIANT=\"${OS_VARIANT}\""                          >> /usr/lib/os-release
echo "VARIANT_ID=\"${OS_VARIANT_ID}\""                    >> /usr/lib/os-release


LOG_CONFIG "login session and live user"

sed -i "s|_ENABLE_TTS_BRLTTY_|${ENABLE_TTS_BRLTTY}|" /etc/skel/.bash_profile

if   [[ "${ISO_GUI}" == 'cli' ]]
then # configure CLI login session
     cp ${ROOT_SKEL_FILES} /root/
     sed -i "s|_DESKTOP_SESSION_||" /root/.bash_profile

else # configure GUI login session
# FIXME: BEGIN issue #1838
groupadd -g 92 audio ; groupadd -g 6 disk ; groupadd -g 93 optical ; groupadd -g 95 storage ;
# FIXME: END issue #1838

     # configure live user
     [[ -n "$(id ${LIVE_USER} 2> /dev/null)" ]] && userdel -r ${LIVE_USER} 2> /dev/null
     useradd -m -p "" -g users -G "${USER_GROUPS}" -s ${DEFAULT_SHELL} ${LIVE_USER}

     # configure auto-login
     if   [[ "${ISO_INIT}" == 'systemd' ]]
     then sed -i "s|--autologin root|--autologin ${LIVE_USER}|" /etc/systemd/system/getty@tty1.service.d/autologin.conf

     elif [[ "${ISO_INIT}" == 'openrc' ]]
     then sed -i "s|--autologin root|--autologin ${LIVE_USER}|" /etc/conf.d/agetty.tty1
     fi

     # configure welcome news alert
     sed -i "s|_EDITION_TITLE_|${OS_PRETTY_NAME}| ; \
             s|,Don't show this again:0||         ; \
             s|620x460|620x520|                     " /usr/bin/autostart.sh

     # configure desktop environment
     sed -i "s|/issue-tracker/|/isos/|"      /home/${LIVE_USER}/Desktop/bug-tracker.desktop
     if   [[ "${ISO_GUI}" == 'lxde' ]]
     then rm -f /etc/xdg/autostart/octopi-notifier.desktop 2> /dev/null # FIXME: issue #1850
          for desktop_file in parabola-installer.desktop parabola-irc.desktop bug-tracker.desktop
          do  sleep 2 ; touch                /home/${LIVE_USER}/Desktop/${desktop_file} ; # sort
          done
          sed -i "s|_DESKTOP_SESSION_|LXDE|" /home/${LIVE_USER}/.bash_profile
          sed -i "s|_DESKTOP_SESSION_|LXDE|" /home/${LIVE_USER}/.dmrc

     elif [[ "${ISO_GUI}" == 'mate' ]]
     then sed -i "s|_DESKTOP_SESSION_|mate|" /home/${LIVE_USER}/.bash_profile
          sed -i "s|_DESKTOP_SESSION_|mate|" /home/${LIVE_USER}/.dmrc

     else echo "invalid \$ISO_GUI for _DESKTOP_SESSION_ '${ISO_GUI}'"
          exit 1
     fi
fi
